/*
 *  Chunk.h
 *  glow
 *
 *  Created by sunjun on 11-6-14.
 *  Copyright 2011 sunstdio. All rights reserved.
 *
 */

//////////////////////////////////////////////////////////////////////////

#ifndef __Chunk__
#define __Chunk__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Engine)

//////////////////////////////////////////////////////////////////////////

	#define CHUNK_STRIDE	4.0f
	#define ALPHA_STRIDE	1.0f

	//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented Chunk interface.
	class Chunk : public GReference
	{
	public:
		// constructor
		Chunk();

		// destructor
		virtual ~Chunk();

		// load the data
		virtual VOID Load(const VOID* data);

		// draw the chunk
		virtual VOID Draw(Graph *gc);
	
	protected:
		std::vector<PrimitivePtr>mPrimitives;
		std::list<KeyPtr>mKeys;

	private:friend class Map;
	};

	//////////////////////////////////////////////////////////////////////////

	typedef GPtr<class Chunk>ChunkPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Chunk__

//////////////////////////////////////////////////////////////////////////